// Promise.all() ------------------------------------------------
// 如果请求没有依赖就同时请求 一个一个消耗更多时间 
function ajax (url) {

}
ajax()
ajax()
ajax()
ajax()
// 传统
// 怎么判断多有的请求都结束了?
// 计数器 数量 = 任务数量 => 结束

// 多个promise和成一个promise
var promise = Promise.all([
  ajax(),
  ajax(),
])

promise.then(function (values) {
  console.log(values);
}).catch(function(error) {
  console.log(error);
})

ajax('/api/urls.json')
// 得到的是包含所有URL地址的对象
.then(value => {
  // 获取对象的所有的属性的值(URL地址)组成的一个数组
  const urls = Object.values(value)
  // 把字符串数组转化成为包含全部请求任务的Promise对象数组
  const tasks= urls.map(url => ajax(url))
  // 调用Promise.all把Promise数组组合成为一个新的Promise然后return掉
  return Promise.all(tasks)
})
// then可以拿到当前Promise数组的每一个异步请求得到的结果数数据
// 需要等待所有任务结束才会结束 全成功才成功
.then(values =>{
  console.log(values);
})
// Promise.race() -----------------------------------------------
// 只会等待第一个完成的任务结束就结束了
// 赛跑
// 实现ajax请求的超时限制
const request = ajax('/api/posts.json')
const timeout = new Promise((resolve,reject)=> {
  setTimeout(()=>reject(new Error('reject')),500)
})

Promise.race([
  request,
  timeout
])
.then(val =>{
  console.log(val);
})
.catch(err => {
  console.log(err);
})